package com.news.service;

import com.news.model.ArticleImage;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * 图片缓存服务接口
 */
public interface ImageCacheService {
    
    /**
     * 异步下载并缓存图片
     * @param image 图片信息
     * @return 返回本地文件路径的Future
     */
    CompletableFuture<String> cacheImage(ArticleImage image);
    
    /**
     * 批量缓存图片
     * @param images 图片列表
     * @return 返回已缓存图片数量的Future
     */
    CompletableFuture<Integer> cacheImages(List<ArticleImage> images);
    
    /**
     * 获取图片的本地缓存路径
     * @param imageUrl 图片URL
     * @return 本地缓存路径，如果不存在返回null
     */
    String getCachedImagePath(String imageUrl);
    
    /**
     * 检查图片是否已缓存
     * @param imageUrl 图片URL
     * @return 是否已缓存
     */
    boolean isImageCached(String imageUrl);
    
    /**
     * 清理过期的缓存图片
     * @param maxAgeHours 最大缓存时间（小时）
     * @return 清理的文件数量
     */
    int cleanExpiredCache(int maxAgeHours);
    
    /**
     * 清空所有缓存
     */
    void clearAllCache();
    
    /**
     * 获取缓存目录大小（字节）
     * @return 缓存目录大小
     */
    long getCacheSize();
    
    /**
     * 获取缓存文件数量
     * @return 缓存文件数量
     */
    int getCacheFileCount();
} 